import random

from django.db import models
from django.db.models import CASCADE


class UserModel(models.Model):
    # 用户名，字符串类型
    username = models.CharField(max_length=255, verbose_name='用户名', default="请选择用户名")
    # 手机号码，字符串类型
    phone = models.CharField(max_length=255, verbose_name='手机号', )

    # 简介，字符串类型
    individual = models.CharField(max_length=100, verbose_name='简介', default='这家伙很懒什么都没有留')

    # 用户ID，字符串类型，默认11位随机数（这里需要在模型中实现默认值的逻辑，或在数据库层面设置）
    userid = models.CharField(max_length=11, verbose_name='用户ID',
                              default=str(random.randint(10000000000, 99999999999)))
    # 注意：Django模型不支持直接在字段上设置默认的随机值，您需要在模型保存前或使用信号等方式生成这个值。

    # 头像，字符串类型，默认头像（这里应该是头像的路径或URL，而不是直接存储图像数据）
    headimg = models.CharField(max_length=255, verbose_name='头像',
                               default='http://127.0.0.1:8000/upload/userheadimg/defaultimg.jpg')

    # 性别，字符串类型，未知
    sex = models.CharField(max_length=5, verbose_name='性别', default='未知')

    # 生日，日期类型，默认2000-01-01
    birthday = models.DateField(verbose_name='生日', default='2000-01-01')
    # 注意：Django的DateField字段默认值为datetime.date对象，这里为了简化使用了字符串，但最好在模型中转换为正确的日期格式。

    # 邮箱，字符串类型，允许为空
    email = models.CharField(max_length=50, verbose_name='邮箱', null=True, blank=True)
    # 注意：在Django中，null=True表示数据库层面允许为空，blank=True表示表单验证时允许为空。

    # 密码，字符串类型，非空
    password = models.CharField(max_length=20, verbose_name='密码', default="000000")

    # 背景图，字符串类型（根据您的图片文本，我猜测这可能是“beijing”的拼写错误，但已按原样保留）
    beiimg = models.CharField(max_length=255, verbose_name='背景图',
                              default='http://127.0.0.1:8000/upload/userbackimg/beiimg.png')
    Realname = models.CharField(max_length=50, verbose_name='真实姓名', default='', null=True)
    identity = models.CharField(max_length=50, verbose_name='身份证', default='', null=True)
    address = models.CharField(max_length=50, verbose_name='身份证', default='', null=True)

    class Meta:
        # 模型名
        db_table = "db_user"


class SfUser(models.Model):
    user = models.ForeignKey(UserModel, on_delete=CASCADE)
    uid = models.CharField(max_length=50)
    token = models.CharField(max_length=50)
    type = models.CharField(max_length=50)

    class Meta:
        db_table = "db_sfuser"


class NewsType(models.Model):
    """
    新闻类型表模型
    """
    typename = models.CharField(max_length=50, verbose_name='标题', default='')

    class Meta:
        db_table = "db_newstype"

    def __str__(self):
        return self.typename


# 3. 文章表
class Essay(models.Model):
    """
    文章表模型
    """
    title = models.CharField(max_length=50, verbose_name='标题', default='')
    content = models.TextField(verbose_name='内容', help_text='需要插图用#*#分割', default='')
    addtime = models.DateTimeField(verbose_name='发布时间', auto_now_add=True)
    user = models.ForeignKey(UserModel, on_delete=models.CASCADE, verbose_name='用户表外键')
    imglist = models.CharField(max_length=700, verbose_name='图片地址', default='')
    type = models.ForeignKey(NewsType, on_delete=models.CASCADE, verbose_name='类型表外键')
    num = models.IntegerField(verbose_name='阅读量', default=0)

    class Meta:
        db_table = "db_essay"

    def __str__(self):
        return self.title


# 4. 视频表
class Video(models.Model):
    """
    视频表模型
    """
    title = models.CharField(max_length=50, verbose_name='标题', default='')
    link = models.CharField(max_length=100, verbose_name='视频链接', default='')
    addtime = models.DateTimeField(verbose_name='发布时间', auto_now_add=True)
    user = models.ForeignKey(UserModel, on_delete=models.CASCADE, verbose_name='用户表外键')
    type = models.ForeignKey(NewsType, on_delete=models.CASCADE, verbose_name='类型表外键')
    num = models.IntegerField(verbose_name='阅读量', default=0)

    class Meta:
        db_table = "db_video"

    def __str__(self):
        return self.title


# 5. 话题表
class Topic(models.Model):
    """
    话题表模型
    """
    title = models.CharField(max_length=50, verbose_name='内容', default='')
    num = models.IntegerField(verbose_name='类型', default=0)

    class Meta:
        db_table = "db_topic"

    def __str__(self):
        return self.title


# 6. 动态表
class Dynamic(models.Model):
    """
    动态表模型
    """
    content = models.CharField(max_length=300, verbose_name='内容', default='')
    imglist = models.CharField(max_length=700, verbose_name='图片地址', default='')
    addtime = models.DateTimeField(verbose_name='发布时间', auto_now_add=True)

    user = models.ForeignKey(UserModel, on_delete=models.CASCADE, verbose_name='用户表外键')
    type = models.ForeignKey(NewsType, on_delete=models.CASCADE, verbose_name='类型表外键')
    num = models.IntegerField(verbose_name='阅读量', default=0)
    topic = models.ForeignKey(Topic, on_delete=models.CASCADE, verbose_name='话题', null=True, blank=True)

    class Meta:
        db_table = 'db_dynamic'

    def __str__(self):
        return self.content
